<?php

class Visitas {

    private $codigo;
    private $codcliente;
    private $codusuario;
    private $foto;
    private $arquivopdf;
    private $datahora;
    private $descricao;

    function __construct($codigo=null, $codcliente=null, $codusuario=null, $foto=null, $arquivopdf=null, $datahora=null, $descricao=null) {
        if($codigo === null){
            $this->setAtributos(0,0,0,'','','','');
        }else if( ($codigo !== null) && ($codcliente === null) ){
            $this->Carrega($codigo);
        }else{
            $this->setAtributos($codigo, $codcliente, $codusuario, $foto, $arquivopdf, $datahora, $descricao);
        }
    }
    
    public function setAtributos($codigo=null, $codcliente=null, $codusuario=null, $foto=null, $arquivopdf=null, $datahora=null, $descricao=null){
        $this->setCodigo($codigo)
            ->setCodcliente($codcliente)
            ->setCodusuario($codusuario)
            ->setFoto($foto)
            ->setArquivopdf($arquivopdf)
            ->setDatahora($datahora)
            ->setDescricao($descricao);
    }
    
    public function Carrega($codigo){
        $conn = new DB_Config();
        $query = ("
            SELECT 
                codigo,
                codcliente,
                codusuario,
                foto,
                arquivopdf,
                datahora,
                descricao
            FROM 
                visitas
            WHERE
                codigo = '$codigo'
        ");
        list($codigo,$codcliente,$codusuario,$foto,$arquivopdf,$datahora,$descricao) = $conn->Query($query)->FetchRow();
        $this->setAtributos($codigo,$codcliente,$codusuario,$foto,$arquivopdf,$datahora,$descricao);
    }

    public function getCodigo() {
        return $this->codigo;
    }

    public function setCodigo($codigo) {
        $this->codigo = $codigo;
        return $this;
    }

    public function getCodcliente() {
        return $this->codcliente;
    }

    public function setCodcliente($codcliente) {
        $this->codcliente = $codcliente;
        return $this;
    }
    
    public function getCodusuario() {
        return $this->codusuario;
    }

    public function setCodusuario($codusuario) {
        $this->codusuario = $codusuario;
        return $this;
    }

    public function getFoto() {
        return $this->foto;
    }

    public function setFoto($foto) {
        $this->foto = $foto;
        return $this;
    }

    public function getArquivopdf() {
        return $this->arquivopdf;
    }

    public function setArquivopdf($arquivopdf) {
        $this->arquivopdf = $arquivopdf;
        return $this;
    }

    public function getDatahora() {
        return $this->datahora;
    }

    public function setDatahora($datahora) {
        $this->datahora = $datahora;
        return $this;
    }

    public function getDescricao() {
        return $this->descricao;
    }

    public function setDescricao($descricao) {
        $this->descricao = $descricao;
        return $this;
    }

    public function Insere_visitas() {
        $conn = new DB_Config();
        $query = ("
            INSERT
            INTO
            visitas
            SET
            codcliente='" . $this->codcliente . "'
            ,codusuario='" . $this->codusuario . "'
            ,foto='" . $this->foto . "'    
            ,arquivopdf='" . $this->arquivopdf . "'
            ,datahora='" . $this->datahora . "'
            ,descricao='" . $this->descricao . "'
            ");
        if (!$conn->Query($query)) {
            throw new Exception("Erro ao inserir uma visita!");
        }
    }

    public function Atualiza_visita() {

        $conn = new DB_Config();
        if ($this->codigo != '') {
            $query = ("
            UPDATE
            visitas
            SET
            codcliente='" . $this->codcliente . "'
            ,codusuario='" . $this->codusuario . "'
            ,foto='" . $this->foto . "'
            ,arquivopdf='" . $this->arquivopdf . "'
            ,datahora='" . $this->datahora . "'
            ,descricao='" . $this->descricao . "'

            WHERE    
            codigo='" . $this->codigo . "'
            ");
            if (!$conn->Query($query)) {
                throw new Exception("Erro ao atualizar visitas.");
            }
        } else {
            echo "Erro código vazio!";
        }
    }

    public function Apaga_visita() {

        if ($this->codigo != '') {
            $conn = new DB_Config();

            $query = ("DELETE FROM visitas WHERE codigo='" . $this->codigo . "'");
            if (!$conn->Query($query)) {
                throw new Exception("Erro ao deletar visita");
            }
        } else {
            echo "Erro código vazio!";
        }
    }

    public static function lista_visitas($extra=null) {      
        $conn = new DB_Config();
        $query = ("SELECT visitas.codigo as codvisita FROM visitas ".$extra);
        $resultado = $conn->Query($query);
        $lista = "";

        while ($dados = $resultado->FetchObject()) {
            $lista[] = new Visitas($dados->codvisita);
        }
        return $lista;
    }
    
    public static function numeroVisitas($extra=null){
        $conn = new DB_Config();
        $query = ("SELECT visitas.codigo FROM visitas ".$extra);
        $resultado = $conn->Query($query);
        
        $numeroVisitas = $resultado->NumRows();
        return $numeroVisitas;
    }

}
?>
